package com.zjj.learn.algorithmPlus.segment1.recursion;

/**
 * 使用递归的思想，实现冒泡排序
 *
 * @author zjj_admin
 * @date 2023/7/1 19:12
 */
public class BubbleSort {


    /**
     * 冒泡排序
     *
     * @param a
     */
    public static void bubbleSort(int[] a) {
        bubble(a, a.length - 1);
    }


    /**
     * 冒泡递归
     *
     * @param a
     * @param j 表示未排序的右侧区域
     */
    private static void bubble(int[] a, int j) {
        if (j == 0) {
            return;
        }
        // x 表示未排序的和已排序的分界点
        int x = 0;
        //冒泡排序
        for (int i = 0; i < j; i++) {
            if (a[i] > a[i + 1]) {
                int t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
                x = i;
            }
        }
        //递归遍历
        bubble(a, x);
    }

}
